/*
 * CombatController.java
 *
 * @author Michael Hansen
 * @author Lukas Thuernagel
 * @author Soeren Warszus
 */

package risk.game;

import javax.swing.JSlider;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;

/**
 *
 * 
 */
public class CombatController implements ActionListener, ChangeListener{ 
    /**
     * Das zum Controller dazugehoerige View.
     */
    private CombatView view = null;
    
    /**
     * Das zum Controller dazugehoerige Model.
     */
    private CombatModel model = null;
    
    /**
     * Der Konstruktor setzt die zugeordneten CombatModel und CombatView.
     *
     * @param model  Das dazugehoerige CombatModel.
     * @param view   Der dazugehoerige CombatView.
     */
    public CombatController(CombatModel model, CombatView view) {
        this.model = model;
        this.view  = view;
    }

    
    /**
     * Methode zum Abfangen von herkoemmlichen Aktionen
     * Dies wird an dieser Stelle nur benoetigt um abzufangen, ob der Benutzer
     * den Wuerfeln-Button betaetigt hat.
     * 
     * @param e  ActionEvent mit der abgefangenen Aktion
     */
    public void actionPerformed(ActionEvent e) {
        if("dice".equals(e.getActionCommand())){
            this.model.fight();
        }
    }
    
    
    /**
     * Methode zum Abfangen von Statusaenderungen an dem im View verwendeten
     * JSlider.
     * Der Slider bestimmt die Truppenanzahl und damit die Anzahl der Wuerfel
     * des Angreifers.
     *
     * @param e ChanceEvent mit der abgefangenen Aktion
     */
    public void stateChanged(ChangeEvent e) {
        JSlider source = (JSlider)e.getSource();
        if (source.getValueIsAdjusting()) {
            this.view.updateAttackerDice((int) source.getValue());
        }
    }
}
